/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * HOJA DE TRABAJO #7
 * Fecha de Entrega: Sábado 8 de Octubre de 2011
 */

/**
 * Interfaz de la lista simplemente encadenada. Representa las acciones que
 * dicha lista puede realizar. 
 * @author José Antonio Bagur - 10275
 */

// SE IMPORTAN LOS PAQUETES A UTILIZAR EN LA INTERFAZ
import java.util.*;

public interface  List <E> {
      
        /**
         * PRE:
         * POST: Remueve y regresa el elemento que posee el valor especificado.
         * @param val
         * @return elemento asociado al valor.
         */
        public E remove(E val);
        
       
        /**
         * PRE:
         * POST: Se añade un valor al inicio de la lista. 
         * @param val 
         */
        public void addFirst(E val);
        
        
        /**
         * PRE:
         * POST: Regresa un interador de los elementos de la lista.
         * @return iterador de la lista. 
         */
        public Iterator<E> iterator();
        
        /**
         * PRE:
         * POST: Regresa el número de elementos en la lista.
         * @return int tamaño de la lista.
         */
        public int size();
        
        
        /**
         * PRE: La lista no se encuentra vacía.
         * POST: Regresa el valor del primer elemento en la lista.
         * @return E primer elemento de la lista.
         */
        public E getFirst();
        
        
        /**
         * PRE:
         * POST: Se añade un valor al final de la lista.
         * @param value
         */
        public void addLast(E value);
    
}   // FIN DE LA INTERFAZ LIST
